package gofile

import (
	"errors"
	"path"
	"strings"
)

// ParseGitAddr 解析git地址
func ParseGitAddr(addr string) (*GitCloneInfo, error) {
	slc := strings.Split(addr, ":")
	if len(slc) != 2 {
		return nil, errors.New("git clone 地址不正确")
	}
	slc1 := strings.Split(slc[0], "@")
	if len(slc1) != 2 {
		return nil, errors.New("git clone 地址不正确")
	}
	slc2 := strings.Split(slc[1], ".git")
	if len(slc2) != 2 {
		return nil, errors.New("git clone 地址不正确")
	}

	return &GitCloneInfo{
		Addr:        addr,
		Domain:      slc1[1],
		Directory:   slc1[1] + "/" + slc2[0],
		ProjectName: path.Base(slc2[0]),
	}, nil
}

type GitCloneInfo struct {
	Addr        string // clone 地址
	Domain      string // 域名
	Directory   string // 目录
	ProjectName string // 项目名称
}
